package com.qst.express.Listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.qst.express.utils.DataDemo;
import com.qst.express.utils.DataDemoService;

import java.util.ArrayList;

/**
 * @author:CoolTiger
 * @title: ExcleListener 自定义监听器
 * @projectName springboot-e
 * @description: TODO
 * @date:2023/10/23/23:12:11
 **/
public class ExcleListener implements ReadListener<DataDemo> {
    private int count = 100;
    private ArrayList<DataDemo> list = new ArrayList<DataDemo>();
    private DataDemoService service;
    public ExcleListener(DataDemoService service){
        this.service = service;
    }

    // 这里可以根据需要处理数据，例如将其保存到集合或数据库中
    @Override
    public void invoke(DataDemo dataDemo, AnalysisContext analysisContext) {
        //将读取的一行数据添加到集合
        list.add(dataDemo);
        //判断是不是达到缓存量了
        if (list.size() >= 100){
            //操作数据库
            service.save(list);
            list = new ArrayList<>(count);//清楚缓存
        }
    }
    // 读取完成后的操作
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        if(list.size() > 0){
            //操作数据库
            service.save(list);
            list = new ArrayList<>(count);//清楚缓存
        }
    }
}
